// api/config.ts

import { useRuntimeConfig } from '#app';

let apiBaseUrl: string | null = null;

/**
 * 安全地获取 API 基础 URL。
 * 因为 useRuntimeConfig() 是一个 Hook，只能在 setup 或组件内调用，
 * 所以我们使用一个导出的函数，并在组件内调用它一次，将 URL 注入到模块变量中。
 */
export function initializeApiConfig(): string { // 确保函数返回 string
  if (apiBaseUrl === null) {
    try {
      const config = useRuntimeConfig();
      // 使用可选链 (?.) 安全地获取配置，如果不存在，则赋值一个空字符串或默认值
      const base = config.public.NUXT_PUBLIC_API_BASE as unknown;
      
      let finalBase: string = 'http://localhost:8010/api/v1'; // 兜底值

      // 关键修复：类型保护，确保 base 是 string 且非空
      if (typeof base === 'string' && base.length > 0) {
          finalBase = base;
      }
      
      // 移除末尾斜杠
      apiBaseUrl = finalBase.endsWith('/') ? finalBase.slice(0, -1) : finalBase;
      
    } catch (e) {
      console.error("Failed to initialize API config:", e);
      apiBaseUrl = 'http://localhost:8010/api/v1'; // 兜底值
    }
  }
  return apiBaseUrl!; // 使用非空断言返回 string
}